home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tools / cpx_acc / cpxbasic / sources / basbuild.c next >
Encoding:
C/C++ Source or Header  |  1994-09-22  |  2.1 KB  |  133 lines

  1. #include <tos.h>
  2. #include <aes.h>
  3. #include <portab.h>
  4. #include <string.h>
  5. #include "xcontrol.h"
  6.  
  7. #define VERS    0x107
  8.  
  9. CPXHEAD head;
  10. typedef struct PH
  11. {
  12.     int ph_branch;
  13.     long ph_tlen;
  14.     long ph_dlen;
  15.     long ph_blen;
  16.     long ph_slen;
  17.     long ph_res1;
  18.     long ph_prgflags;
  19.     int ph_absflag;
  20. }
  21. PH;
  22.  
  23. char buffer[60000L];
  24.  
  25. #define CPXPFAD "F:\\CPXBASIC\\CPX\\"
  26. #define PRGPFAD "F:\\CPXBASIC\\PROG\\"
  27. #define CLIPP    "F:\\CLIPP\\BASICA00.CPX"
  28.  
  29. char *cpx[4]=
  30. {
  31.     CPXPFAD"BASIC000.CPX",
  32.     CPXPFAD"BASIC030.CPX",
  33.     CPXPFAD"BASICA00.CPX",
  34.     CPXPFAD"BASICA30.CPX",
  35. };
  36.  
  37. char *prg[4]=
  38. {
  39.     PRGPFAD"BASIC000.PRG",
  40.     PRGPFAD"BASIC030.PRG",
  41.     PRGPFAD"BASICA00.PRG",
  42.     PRGPFAD"BASICA30.PRG",
  43. };
  44.  
  45. void out(int i,char *s)
  46. {
  47.     char *form="Lesefehler   : ";
  48.     if(i>0) form="Schreibfehler: ";
  49.     if(i<0) form="bearbeite    : ";
  50.     Cconws(form);Cconws(s);Cconws("\r\n");
  51. }
  52.  
  53. main()
  54. {
  55.     int fh,i,ret=1;
  56.     long size;
  57.     PH *ph=(PH*)&buffer;
  58.     char *vers;
  59.     long len;
  60.     appl_init();
  61.     graf_mouse(M_OFF,NULL);
  62.     Cconws("\033E");
  63.     for(i=0;i<4;i++)
  64.     {
  65.         fh=(int)Fopen(cpx[i],0);
  66.         if(fh<=0)
  67.         {
  68.             out(0,cpx[i]);
  69.             continue;
  70.         }
  71.         Fread(fh,sizeof(CPXHEAD),&head);
  72.         Fclose(fh);
  73.         break;
  74.     }
  75.     if(i<4)
  76.     {
  77.         head.cpx_version=VERS;
  78.         for(i=0;i<4;i++)
  79.         {
  80.             out(-1,cpx[i]);
  81.             fh=(int)Fopen(prg[i],0);
  82.             if(fh<=0)
  83.             {
  84.                 out(0,prg[i]);
  85.                 continue;
  86.             }
  87.             size=Fread(fh,60000L,buffer);
  88.             Fclose(fh);
  89.             vers=buffer+ph->ph_tlen;
  90.             len=ph->ph_dlen;
  91.             while(len-->0 &&(
  92.                     vers[0]!='v'||
  93.                     vers[1]!='X'||
  94.                     vers[2]!='.'||
  95.                     vers[3]!='y'||
  96.                     vers[4]!='z')) vers++;
  97.             if(len>0)
  98.             {
  99.                 vers[1]=(VERS>>8)+'0';
  100.                 vers[3]=((VERS>>4)&0xf)+'0';
  101.                 vers[4]=(VERS&0xf)+'0';
  102.             }
  103.             fh=(int)Fcreate(cpx[i],0);
  104.             if(fh<=0)
  105.             {
  106.                 out(1,cpx[i]);
  107.                 continue;
  108.             }
  109.             Fwrite(fh,sizeof(head),&head);
  110.             Fwrite(fh,size,buffer);
  111.             Fclose(fh);
  112.             if(i==2)
  113.             {
  114.                 out(-1,CLIPP);
  115.                 fh=(int)Fcreate(CLIPP,0);
  116.                 if(fh<=0)
  117.                 {
  118.                     out(1,CLIPP);
  119.                     continue;
  120.                 }
  121.                 Fwrite(fh,sizeof(head),&head);
  122.                 Fwrite(fh,size,buffer);
  123.                 Fclose(fh);
  124.             }
  125.         }
  126.         ret=0;
  127.     }
  128.     graf_mouse(M_ON,NULL);
  129.     appl_exit();
  130.     return ret;
  131. }
  132.  
  133.